package br.com.conceito.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.conveito.entidade.Arquivo;

public class ArquivoDAO {

	public Boolean salvar(final Arquivo arquivo, Connection connection)
			throws SQLException {
		StringBuilder sql = new StringBuilder();
		sql.append("insert into ceu.arquivo(id_pai,caminho,nome,data) values(?,?,?,now()) ");
		PreparedStatement statement = connection.prepareStatement(sql
				.toString());
		statement.setInt(1, arquivo.getIdPai());
		statement.setString(2, arquivo.getCaminho());
		statement.setString(3, arquivo.getNome());
		return statement.execute();
	}

	public void remover() {

	}

	public List<Arquivo> carregarArquivosDeUmNo(final Integer no) {
		List<Arquivo> arquivos = new ArrayList<Arquivo>();
		try {
			StringBuilder sql = new StringBuilder();
			sql.append("select id,id_pai,caminho,nome,data from ceu.arquivo ");
			sql.append("where id_pai = ?");
			Connection connection = FabricaDAO.getInstancia().getConection();
			PreparedStatement statement = connection.prepareStatement(sql
					.toString());
			statement.setInt(1, no);
			ResultSet rs = statement.executeQuery();
			while (rs.next()) {
				Arquivo arquivo = new Arquivo();
				arquivo.setData(rs.getDate("data"));
				arquivo.setId(rs.getInt("id"));
				arquivo.setIdPai(rs.getInt("id_pai"));
				arquivo.setNome(rs.getString("nome"));
				arquivo.setCaminho(rs.getString("caminho"));
				arquivos.add(arquivo);
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return arquivos;
	}

	public String carregarCaminhoProfundidadeNoPai(final Integer idNo){
		String profundidade = "";
		StringBuilder sql = new StringBuilder();
		sql.append("SELECT id,id_pai,nome FROM arvore where id = ?");
		try {
			Connection connection = FabricaDAO.getInstancia().getConection();
			PreparedStatement statement = connection.prepareStatement(sql.toString());
			statement.setInt(1, idNo);
			ResultSet rs = statement.executeQuery();
			if(rs.next()){
				Integer idPai = rs.getInt("id_pai"); 
				if(idPai != null && idPai.intValue() > 0){
					profundidade = carregarCaminhoProfundidadeNoPai(idPai);
					profundidade += "//"+rs.getString("nome");
				}else{
					profundidade += "//"+rs.getString("nome"); 
				}
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return profundidade;
	}

	
}
